//
//  HMOAuthViewController.swift
//  WeiBo
//
//  Created by Apple on 16/9/20.
//  Copyright © 2016年 KY. All rights reserved.
//

import UIKit
import SVProgressHUD

//  微博的appkey
let WeiboAppKey = "932421745"
//  client_secret
let WeiboAppSeret = "bf49771e565be773d40afb5de317dad0"
//  授权回调地址
let WeiboRedirect_Uri = "http://www.itcast.cn"


//  新浪微博登录页面
class HMOAuthViewController: UIViewController {
    
    // MARK:    --懒加载
    private lazy var webView: UIWebView = UIWebView()
    
    //  自定义视图
    override func loadView() {
        //  设置透明的，默认是不透明的
        webView.isOpaque = false
        //  设置代理
        webView.delegate = self
        view = webView
        
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        setupNavUI()
        requestOAuthLogin()
    }

    private func setupNavUI() {
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "取消", target: self, action: #selector(cancelAction))
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", target: self, action: #selector(autoFillAction))
        title = "微博"
        
    
    }
    
    // MARK:    --点击事件
    @objc private func cancelAction() {
    
        dismiss(animated: true, completion: nil)
        
    
    }
    
    @objc private func autoFillAction() {
        //  自动填充操作
        webView.stringByEvaluatingJavaScript(from: "document.getElementById('userId').value = 'hao123guohaibin@163.com';document.getElementById('passwd').value = 'guohaibin123'")
    }
    
    
    
    //  加载第三方登录页面
    private func requestOAuthLogin() {
        //  定义接口
        let url = "https://api.weibo.com/oauth2/authorize?client_id=\(WeiboAppKey)&redirect_uri=\(WeiboRedirect_Uri)"
        print(url)
        //
        let request = URLRequest(url: URL(string: url)!)
        //  请求接口
        webView.loadRequest(request)
    
    
    }
    
    //  获取用户信息接口
//    fileprivate func requestUserInfo(userAccount: HMUserAccount) {
//        //  获取用户信息
//        HMNetworkTools.sharedTools.requestUserInfo(userAccount: userAccount) { (response, error) in
//            if error != nil {
//                print("网络请求异常: \(error!)")
//                return
//            }
//            
//            guard let dic = response as? [String: Any] else {
//                return
//            }
//            //  获取用户信息
//            let name = dic["name"]
//            let avatar_large = dic["avatar_large"]
//            
//            //  给用户对象保存属性值
//            userAccount.name = name as? String
//            userAccount.avatar_large = avatar_large as? String
//            
//            print(userAccount)
//            //  保存用户信息
//            userAccount.saveUserAccount()
//            
//        }
//    }
//    
//    
//    //  获取accesstoken
//    fileprivate func requestAccessToken(code: String) {
//    
//        HMNetworkTools.sharedTools.requestAccessToken(code: code) { (response, error) in
//            if error != nil {
//                print("网络请求异常: \(error!)")
//                return
//            }
//            
//            //  网络请求成功
//            guard let dic = response as? [String: Any] else {
//                print("不是一个正确的字典")
//                return
//            }
//            
//            //  完成字典转模型
//            let userAccount = HMUserAccount(dic: dic)
//            print(userAccount)
//            
//            //  获取用户信息
//            self.requestUserInfo(userAccount: userAccount)
//            
//            
//            
//        }
//        
//        
//    }
    
    
  
  

}

extension HMOAuthViewController: UIWebViewDelegate {
    //  将要加载请求
    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
        //  获取url
        guard let url = request.url else {
            return false
        }

        //  不是我们回调页打头让其加载
        if !url.absoluteString.hasPrefix(WeiboRedirect_Uri) {
            return true
        }
        
        //  代码执行到此是我们关系的url
        //  获取地址的参数
        if let query = url.query , query.hasPrefix("code=") {
            //  截取code
            let code = query.substring(from: "code=".endIndex)
            //  获取accesstoken
//            requestAccessToken(code: code)
            
            //  使用ViewModel调用OAuth相关接口
            HMUserAccountViewModel.sharedUserAccountViewModel.requestAccessToken(code: code, callBack: { (isSuccess) in
                if isSuccess {
                    
                    //  dismis当前控制器, 要等到控制器销毁完成，执行切换根视图控制器
                    self.dismiss(animated: false, completion: {
                        //  切换跟视图控制器
                        NotificationCenter.default.post(name: NSNotification.Name(SwitchRootVCNotification), object: self)
                    })
                    
                    
                }
            })
            
        }
        
        
        //  不让其加载
        return false
    }
    //  开始加载请求
    func webViewDidStartLoad(_ webView: UIWebView) {
        SVProgressHUD.show()
    }
    //  加载完成
    func webViewDidFinishLoad(_ webView: UIWebView) {
        SVProgressHUD.dismiss()
    }
    //  加载失败
    func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
        SVProgressHUD.dismiss()
    }
}


